/* TODO (Heart Infinity#1#): Finish up the Memory Manager so that it has...

Handles with built in arrays.

Possibly defragmentation of the heap.

Uses various allocators based on the requested allocation. -GOOD ENOUGH FOR NOW

Detects which allocator a pointer/handle is from. -DONE

Support a grow function which takes a pointer/handle as input and either copies the old data to the new
allocation or returns the same pointer if the existing allocation could be increased in place. -DONE

Can toggle if pointers/handles returned by tempAlloc are tracked, and produces an error if it's
used after it expires.

If a stack allocator is used for permament storage track freed blocks, and free to that point when possible. -DONE
*/

/* TODO (Heart Infinity#1#): Create Containers like:
Dynamic Array - DONE
Linked List - DONE
Deque - DONE - clean up at some point
Queue - DONE
Binary Search Tree - DONE-ish
Dictionary
*/

/* TODO (Heart Infinity#1#): Finish up the Second half of the string hashing system.
Set up the build system to pre-process all compiled source files using the String Processor then reverting
to the original file after compiling.

Create the system that will load the final file of hashed
strings, hash new strings, and return pointers to strings when given the hash.
*/

/* TODO (Heart Infinity#1#): Go over the Global Variable system again.
Change the possible variable types to string, bool,
int, and float.

Maybe allow for range limits to be set per variable.

Possibly create a class to handle accessing variables, and mirroring operations back to the stored variable.
*/

/* TODO (Heart Infinity#1#): Make a ConfigFile class to handle loading config files.

Loads variables from file into global variable system.
*/

/* TODO (Heart Infinity#1#): Enable the logging class to log to file.
*/

/* TODO (Heart Infinity#1#): Begin using unit tests to test code. */

/* TODO (Heart Infinity#1#): Switch from ASCII to unicode. */
